查看原文
其他

What’ new ? 速通Stata 18

爬虫俱乐部 Stata and Python数据分析 2023-10-24

本文作者:罗天尧,新疆大学商学院‍

本文编辑:周一鸣

技术总编:方一卓

Stata and Python 数据分析

爬虫俱乐部Stata基础课程Stata进阶课程Python课程可在小鹅通平台查看,欢迎大家多多支持订阅!如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~
当你开始数据分析时,一个重要的问题随之而来:你将使用哪个软件进行分析?如果你是一个Stata重度用户,那么你一定会很兴奋,因为Stata 18发布了!速览本文,了解Stata 18中一些实用的新功能。
Table of descriptive statistics‍‍‍
数据探索的必经之路,dtable命令为描述性统计添色。新加入的dtable命令可以进行分组统计,并生成 test of comparison的结果,同时包含众多自定义选项供使用者探索。
webuse nlsw88dtable i.(smsa south collgrad) wage hours tenure, by(union, tests nototals) column(by(hide)) export("tablel", as(x1sx) sheet(Sheet1,replace) ce11(A1) replace

dtable命令可以直接将统计信息输出成excel等多种格式(已经是18岁的人了。。。)。

mediation analysis
Stata 18提供了官方的中介效应命令,可以自定义不同的回归模型,默认为linear model。
wellbeing是一份对照实验数据集。可以通过mediate命令,验证运动(exercise)是否会导致荷尔蒙(bonotonin )水平升高,进而对个体幸福感(bwellbeing)产生积极影响。
webuse wellbeingmediate (wellbeing, logit) (bonotonin, logit) (exercise)
默认输出直接、间接和总效应。

进一步,通过虚拟变量计算直接效应。
estat cde, mvalue(0 1) //cde(controlled direct effects)

Heterogeneous difference in differences
在Stata17推出DID与DDD相关命令后,hdidregress他来了!Stata的续作Heterogeneous did可以计算不同组在不同时间的平均处理效应(AETE)。
hdidregress针对截面数据,xthdidregress针对面板数据使用。同时提供了双向固定效应(TWFE)等四个可选的估计量。
演示数据集用以分析健康计划(hhabit)是否降低了学生的健康水平(bmi),采用具有双重robustness的逆概率加权估计量(AIPW augmented inverse-probability weighting )。在因果模型中,检验母亲的受教育程度( medu )与孩子的健康水平(bmi),并控制学生性别与是否参与运动。在处理模型中,检验公园数量 (parksd) 与健康计划(hhabit)间的关系。year为时间变量,group(schools)表示聚类到学校。‍
use https://www.stata-press.com/data/r18/hhabitshdidregress aipw (bmi medu i.girl i.sports) (hhabit parksd), group(schools) time(year)
Stata会自动生成不同的did队列(cohort)用于回归。

atetplot会输出AETE的图例,sci可以指定显示置信区间。
estat atetplot, sci

一键生成平行趋势数据与图例。
estat aggregation, dynamic graph

Instrumental-variables quantile regression
IV家族迎来了两位新人,ivqregressivfprobit ,分别为“0-1间的变量”和“分位数回归”服务。
Robust inference for linear models与 Wild cluster bootstrap
当聚类的样本过小或聚类样本不平衡时,推断存在有偏的风险。2008年,Cameron等人提出了名为WCB的替代方法,通过bootstrap的方法生成合理样本分布,Stata正是通过这一思路开发了wildbootstrap命令,可以在所有主流回归命令中使用。
webuse nlswork keep if ind_code!=. qui regress ln_wage tenure union collgrad i.year, vce(robust) est store robust qui regress ln_wage tenure union collgrad i.year, vce(cluster ind_code) est store cluster qui regress ln_wage tenure union collgrad i.year, vce(hc2 ind_code, dfadjust) est store HC2 qui regress ln_wage tenure union collgrad i.year, vce(cluster idcode ind_code) est store multiway etable, estimates(robust cluster HC2 multiway)     cstat(_r_ci, nformat(%9.4f))     column(estimates) keep(union)  novarlabel nofvlab center     export(setable.html, replace)     title(Confidence-intervals comparison)
观察在不同标准误下,是否加入公会(union)这一变量的置信区间。这份数据集中,部分分类变量的观测值相差较多。HC2的情形中,置信区间包含了0。

可以对比wildbootstrap下的结果。
 wildbootstrap regress ln_wage tenure union collgrad i.year, cluster(ind_code) coefficients(union) rseed(111)
同set seed方式一样,wildbootstrap通过rseed()实现了操作的可重复性。

Spline function generation
当我们进行回归分析时,通常需要选择一个函数形式来描述自变量和因变量之间的关系。但是,有时我们并不确定应该使用哪种函数形式,或者我们想要一种更灵活的方式来描述这种关系。这时,我们可以使用基函数(Spline)将自变量分成若干个区间,每个基函数都描述了自变量在一个区间上的表现形式,而且这些基函数能够灵活地适应自变量和因变量之间的各种形式关系。Stata 18提供了makespline命令,用以从一组现有变量中生成基函数。例如,我们可以输入命令:
makespline x1-x100, cubic(3)
生成100个三阶基函数,每个基函数对应一个从x1到x100的变量。我们可以使用这些基函数中的任何一个来拟合模型,对感兴趣的结果变量和任何基函数成分之间的关系进行分析,而不需要假设它们之间的关系遵循线性或其他特定的函数形式。
假设我们想检验母亲吸烟 (mbsmoke) 对婴儿出生体重 (bweight) 的影响。同时,出生体重 (bweight)可能与母亲的年龄(mage)、母亲的受教育程度(medu)、父亲的受教育程度(fedu)有关;母亲的受教育程度(medu)可能与母亲吸烟 (mbsmoke) 有关。
我们使用 makespline 下的bspline方法生成third-order B-spline basis函数。函数默认以_bsp命名,basis() 选项更改基础名称。
makespline bspline mage medu fedudescribe _bsp*

测试交互作用下,各个函数对婴儿出生体重(bweight)的影响;受教育程度(medu)函数对母亲吸烟 (mbsmoke) 的影响。官方使用了telasso命令做了组合示例。
telasso (bweight c._bsp_1*##c._bsp_2* _bsp_3*) (mbsmoke _bsp_2*)

同时,mkspline还有一个knot的设定,即对年龄(age)变量分段的节点,分别用age1 -age6接收。当不添加marginal选项时,函数系数将是被解释变量对age的导数;marginal选项下,则变为导数的累加。
mkspline age1 20 age2 30 age3 40 age4 50 age5 60 age6 = age, marginal
Graphs
Stata 18中图例的色调更为醒目。
sysuse educ99gdp, cleargenerate total = private + publicgraph hbar (asis) public private, over(country, sort(total) descending) stack title("Spending on tertiary education as % of GDP, 1999", span pos(11)) note("Source: OECD, Education at a Glance 2002", span)

如果想使用传统配色,可以在scheme中设置。

set scheme s2color, permanently

添加了变量显色的可视化图例。

sysuse auto, cleartwoway scatter mpg price, colorvar(weight)

样本点颜色由选项 colorvar() 中指定的变量值决定。

A set of frames
Stata引入了一种全新的文件格式——dtas,简单来说dtas是在dta基础上默认添加了frame概念。
以往的操作,创建并合并两个frame。
clear all frame create census frame change census webuse census frame create housing frame change housing webuse hsng pwf //打印当前框架

frame合并,for循环合并文件的时代终于要结束了。

frlink 1:1 state, frame(census) //还支持类似merge的m:1功能。

现在可以合并单个变量并直接重命名。创建别名为 d的变量,并赋值为census frame中的 divorce的值。

fralias add d = divorce, from(census)

以housing为working frame并链接其余所有frame,将该文件保存为 .dtas 格式,命名为myframeset。

frames save myframeset, frames(housing) linked
Do-file Editor 升级

Stata18中加入了文件自动备份功能。编译器功能重写,加入了语法高亮、自定义关键词功能。数据集、编译器添加了自定义格式设置。

QuadratureVec

Mata 的新类 QuadratureVec() 在功能上与 Quadrature() 相同,只是它更方便地处理向量积分问题。

mata: real scalar f1 (real scalar x) {return(2*x)} real scalar f2 (real scalar x) {return(sin(x))} real scalar f3 (real scalar x) {return(exp(x))} q = QuadratureVec() //实例化 evaluator = (&f1() \ &f2() \ &f3()) q.setEvaluator(evaluator) limits = ((1, 2) \ (0,pi()) \ (0,1)) q.setLimits(limits) q.integrate() end

结果:

Boost-based regular expressions

全新字符串功能上线,继续为正则表达式开疆扩土。

regexmatch() //执行正则表达式与 ASCII 字符串的匹配。regexreplace() //用指定文本替换与正则表达式匹配的第一个子字符串。regexreplaceall() //用指定文本替换与正则表达式匹配的所有子字符串。regexcapture() //返回先前匹配的子表达式。regexcapturenamed() //返回一个子表达式,该子表达式对应于先前匹配的正则表达式中的匹配命名组。

更多细节:https://www.stata.com/help.cgi?whatsnew17to18#NewSVY

END

重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。



对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!







往期推文推荐【爬虫实战】Python爬取美食菜谱揭秘网络中心人物,你会是其中之一吗?考研之后,文科生需以“do”躬“do”!焕新升级!轻松获取港股、权证的历史交易数据爬虫俱乐部的精彩答疑---cntraveltime【爬虫俱乐部新命令速递】在Stata中与ChatGPT对话

用`fs`命令批量获取文件夹和不同文件夹下的excel文件

自然语言处理之实例应用

JSON帮手,FeHelper

最新、最热门的命令这里都有!

Python实现微信自动回复告诉python,我想“狂飙”了——线程池与异步协程为爬虫提速高级函数——map()和reduce()

Stata绘制条形图的进阶用法

快来看看武汉的房价是不是又双叒叕涨了!Python 常见内置函数(二)

Stata绘制饼形图的进阶用法

Python标准库--logging模块
     关于我们 

   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:1)必须原创,禁止抄袭;2)必须准确,详细,有例子,有截图;注意事项:1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。2)邮件请注明投稿,邮件名称为“投稿+推文名称”。3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存